/* 
 * File:   filters.h
 * Author: gustavo
 *
 * Created on July 16, 2011, 3:49 AM
 */

#ifndef FILTERS_H
#define	FILTERS_H

#include "../../matrix/matrix.h"

#ifdef	__cplusplus
extern "C" {
#endif
	typedef enum _imp_filter_type ImpFilterType;

	enum _imp_filter_type {
		IMP_FILTER_TYPE_SOBEL = 0,
		IMP_FILTER_TYPE_PREWITT,
		IMP_FILTER_TYPE_FARID,
		IMP_FILTER_TYPE_SCHARR,
		IMP_FILTER_TYPE_GAUSSIAN
	};


	typedef enum _imp_filter_component ImpFilterComponent;

	enum _imp_filter_component {
		IMP_FILTER_FULL = 0,
		IMP_FILTER_P,
		IMP_FILTER_D1,
		IMP_FILTER_D2
	};

	ImpMatrix imp_filter_farid_simoncelli_5(char * d, ImpFilterComponent comp);
	ImpMatrix imp_filter_farid_simoncelli_7(char * d, ImpFilterComponent comp);

	ImpMatrix imp_filter_get(char * name, int dim, char or, int comp);

	ImpMatrix imp_filter_farid_simoncelli(int dim, char or, int comp);
	ImpMatrix imp_filter_farid_simoncelli_2st(int dim, char or, int comp);
	ImpMatrix imp_filter_sobel(int dim, char or, int comp);
	ImpMatrix imp_filter_scharr(int dim, char or, int comp);

	ImpMatrix * imp_filter_new_gaussian(int size, real s);
	ImpMatrix * imp_filter_gaussian_teta(int size, real sx, real sy, real teta);

	//ImpMatrix * imp_filter_new_gaussian(int rows, int columns, real sx, real sy, real teta);

	ImpMatrix * imp_filter_new_gaussian_full(int rows, int columns, real sx, real sy, real teta);

#ifdef	__cplusplus
}
#endif

#endif	/* FILTERS_H */

